package cn.fancy.sdk.common.utils;

import android.util.Log;

public class LoginSwitchManage {
	// 第一阶段 -------这里只梳理登陆或者注册请求返回的开关
	// 登录注册返回数据中的绑定，实名开关汇总，下面为初始标志位跟说明
	public int need_bind_flag = 0; // 是否需要绑定 0表示不需要绑定 1表示需要强制绑定 2表示可以取消绑定
	public String cm_flag = "0"; // 防沉迷状态 0表示未进行实名验证 1表示已经通过实名验证且已经成年
									// 2表示已经通过实名验证但是未成年
	public int authenticate_flag = 0; // 是否实名验证 0表示不需要实名验证 1表示强制实名验证
										// 2表示可取消的实名验证

	// 这里为最终推算结果标示
	public int result_need_bind = 0; // 是否需要进行手机绑定 0 不需要 1 表示强制手机绑定 2表示可取消的手机绑定
	public boolean resule_change_to_bind = true; // 是否可以跳转到手机绑定界面
													// 这里特殊说明下，适用于可切换实名跳转到可切换手机绑定规则
	public int result_ccbind_cancle_sing = 0; // 在可切换绑定手机界面，选择取消的结果选项 0 直接登录 1
												// 直接返回登录界面 2 跳转到普通实名面板
	
	// 实名判断最终结果 0 不需实名 1 强制实名 2 不强制实名 
	// 3可切换的实名
	public int result_authenticate = 0;
	public boolean result_must_ccreal = false; // 判断可切换实名认证是否强制的
	public boolean result_bind_equal_real = false; // 保存绑定是否等同于实名验证
	public boolean result_change_to_real = true; // 是否可以跳转到实名面板---->这里特殊说明下，适用于可切换手机绑定跳转到可切换实名认证

	private LoginSwitchManage() {
	}

	// 静态内部类实现单例模式
	private static class LoginSwitchManageHolder {
		private static LoginSwitchManage instance = new LoginSwitchManage();
	}

	public static LoginSwitchManage getInstance() {
		return LoginSwitchManageHolder.instance;
	}

	// 根据后台返回的标示位和需求，推算出最终的运行逻辑
	// 参数1 绑定标示
	// 参数2防成迷状态
	// 参数3 实名面板类型
	// 参数4是否为可切换的实名
	// 参数5绑定手机是否等同于实名
	public void calculForSign(int need_bind,  String cm,
			int authenticate ) {
		need_bind_flag = need_bind;
		cm_flag = cm;
		authenticate_flag = authenticate;

		result_need_bind = need_bind;
		result_authenticate = authenticate;
		// 已经绑定的情况下，绑定开关都失效
		
		// 如果是强制实名，且为可切换的状态，需要设置可切换实名为强制状态
		// 形成的 结果1：用户在可切换的绑定手机界面，假设点击了取消，因为是强制实名，所以直接让取消失败，提示需要进行强制实名
		// 结果2：用户在可切换的实名面板面板点击了取消，直接提示需要强制实名
		if (authenticate == 2) {
			result_ccbind_cancle_sing = 1;
			result_must_ccreal = true;
		} else if (authenticate == 1 || authenticate == 2) {
			// 如果需要实名，且非可切换，则用户在可切换的绑定手机界面，点击了取消，会跳到普通实名认证面板
			result_ccbind_cancle_sing = 2;
		}

		// 如果用户已经实名过了，肯定就不用进行实名了，直接跳过
		if (cm.equals("1") || cm.equals("2")) {
			result_authenticate = 0;
		} else {
			// 当用户需要进行绑定，且可切换实名开关开着时，都要求进行进入可切换实名面板
			if ((need_bind == 1 || need_bind == 2)) {
				result_authenticate = 3;
			} else if (need_bind == 0 && authenticate != 0 ) {
				// 当用户不需要绑定，需要实名，且为可切换实名时，要求进入可切换实名面板
				// 因为如果是不需要绑定也不需要实名的话就让他直接登陆成功了
				result_authenticate = 3;
			}
		}

		// 如果经过上面的判断之后，实名验证并非可切换的实名认证（非3），则标示下无法切换到可切换的实名验证
		if (result_authenticate != 3) {
			result_change_to_real = false;
		}

		Log.e("result_authenticate", "result_authenticate:"+result_authenticate);
		Log.e("result_need_bind", "result_need_bind:"+result_need_bind);
		Log.e("result_ccbind_cancle_sing", "result_ccbind_cancle_sing:"+result_ccbind_cancle_sing);
	}

	// 重置所有状态
	public void clearSwitch() {
		need_bind_flag = 0;
		cm_flag = "0";
		authenticate_flag = 0;

		result_need_bind = 0;
		resule_change_to_bind = true;
		result_ccbind_cancle_sing = 0;
		result_authenticate = 0;
		result_must_ccreal = false;
		result_bind_equal_real = false;
		result_change_to_real = true;
	}

}
